package top.igotcha.mapreduce.combiner;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

/**
 * @author Gotcha
 * @date 2021/1/11
 * @describe 规约类
 * Reducer的泛型
 *  KEYIN:k2的类型     每个单词         Text
 *  VALUEIN:v2的类型   集合中泛型的类型  LongWritable
 *  KEYOUT:k3的类型    每个单词         Text
 *  VALUEOUT:v3的类型  出现的次数       LongWritable
 */
public class MyCombiner extends Reducer<Text, LongWritable,Text, LongWritable> {
    /**
     * @describe 是将k2,v2转换为k3,v3
     * @param key 表示k2
     * @param values 表示集合
     * @param context 表示MapReduce上下文对象
     */
    @Override
    protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
        long count = 0;
        //1.遍历values集合
        for (LongWritable value : values) {
            //2.将集合中值相加
            count+=value.get();
        }
        //3.将k3,v3写入上下文
        context.write(key,new LongWritable(count));
    }
}
